package cn.edu.hqu.cst.android.hxy.e3;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;
import androidx.appcompat.app.AppCompatActivity;

// MainActivity 实现 View.OnClickListener 接口，用于处理点击事件
public class MainActivity extends AppCompatActivity implements View.OnClickListener {

    // 用于在界面上显示当前触发点击事件的方式
    private TextView tvMethod;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // 获取 TextView 控件引用，用于显示点击结果
        tvMethod = findViewById(R.id.tv_method);

        // 1. Activity 作为监听器（通过实现接口）
        findViewById(R.id.btn_activity_listener).setOnClickListener(this);

        // 2. 内部类作为监听器
        findViewById(R.id.btn_inner_class).setOnClickListener(new InnerClickListener());

        // 3. 匿名内部类作为监听器
        findViewById(R.id.btn_anonymous).setOnClickListener(v ->
                tvMethod.setText("匿名内部类处理点击事件")
        );

        // 4. Lambda 表达式作为监听器
        findViewById(R.id.btn_lambda).setOnClickListener(v ->
                tvMethod.setText("Lambda 表达式处理点击事件")
        );

        // 5. 外部类作为监听器
        findViewById(R.id.btn_outer_class).setOnClickListener(new OuterClickListener(this));

        // 6. 跳转到系统信息显示界面
        findViewById(R.id.btn_system_info).setOnClickListener(v -> {
            Intent intent = new Intent(MainActivity.this, SystemInfoActivity.class);
            startActivity(intent); // 启动新的 Activity
        });

        // 7. 跳转到进度条显示界面
        findViewById(R.id.btn_progress).setOnClickListener(v -> {
            Intent intent = new Intent(MainActivity.this, ProgressDialogTest.class);
            startActivity(intent);
        });

        // 8. btn_bind_listener_in_xml 使用 android:onClick="onXmlTagClick" 绑定，不需要在代码中设置监听器
    }

    // Activity 实现 View.OnClickListener 接口的回调方法
    // 仅用于处理 "Activity 作为监听器" 按钮的点击事件
    @Override
    public void onClick(View v) {
        if (v.getId() == R.id.btn_activity_listener) {
            tvMethod.setText("Activity 实现 OnClickListener 处理点击事件");
        }
    }

    // 内部类实现 OnClickListener，用于演示内部类处理方式
    class InnerClickListener implements View.OnClickListener {
        @Override
        public void onClick(View v) {
            tvMethod.setText("内部类处理点击事件");
        }
    }

    // 供 XML 标签绑定监听器使用的方法（需在 XML 中绑定 android:onClick="onXmlTagClick"）
    public void onXmlTagClick(View view) {
        tvMethod.setText("XML 标签绑定监听器处理点击事件");
    }
}
